package com.tedu.API.IO;

import org.junit.Test;

import java.io.File;
import java.io.FileFilter;
import java.io.IOException;
import java.util.logging.Filter;
import java.util.logging.LogRecord;

/**
 *  listFiles(接口：Filter)  重载
 *  作用：按照”指定的规则“获取对应的文件/文件夹
 *  Filter接口--专门给listFiles方法提供：过滤文件夹或者文件【指定规则】
 *  accept() 从每个File文件中判断，拿到具体逻辑的文件夹
 *
 * 需求：获取 API 项目下的所有子项【文件和文件夹】,获取src文件
 *      指定规则：验证是s开头就是src
 *作业2：使用匿名内部类进行过滤
 */
public class FilterAPI {
    //主方法的 ./ 路径指到根级
    //单元测试的 ./ 路径指到父级
    public static void main(String[] args) throws IOException {
        //1.创建File文件类
        File file=new File("."+File.separator+"API" );
        System.out.println(file.getCanonicalPath());
        //4.创建Filter接口对象--无法直接创建:实现类---实现---接口【创建】
//        MyFilter my=new MyFilter();

        //2，。获取文件夹下的所有的子项：文件夹下包括所有的文件和文件夹
        File[] subs=file.listFiles(new FileFilter() {
            public boolean accept(File pathname) {
                String name=pathname.getName();
                return name.startsWith("s");
            }
        });
        //3.打印子项下的所有名字
        for (int i=0;i<subs.length;i++){//i下标 从0开始
            System.out.println(" 所有的文件和文件夹的名字"+subs[i].getName());
        }

    }
}
//创建实现类--实现--FileFilter接口---对象创建
//class MyFilter implements FileFilter {
//
//    //accept(File pathname)
//    //参数File pathname----获取所有需要过滤的文件
//    //作用： 添加一个过滤条件，将获取到的所有需要过滤的文件，逐一过滤，【开发者制定】
//    //                       条件满足返回true
//    //
//    public boolean accept(File pathname) {
//        //添加规则：文件或者文件夹s开头 过滤
//        //<1.获取所有的文件夹名字
//        String name=pathname.getName();
//        //<2.过滤 s 开头 文件夹
//        // 字符串：startsWith  返回值 boolean  验证字符串首字符是不是匹配字符
//        //                              如果匹配：true
//        //<3.打印过滤出现的字符串
//        System.out.println("所有文件夹的名字是："+name);
//        return name.startsWith("s");
//    }
//}

